/**
 * Copyright (2017, ) Institute of Software, Chinese Academy of Sciences
 * Copyright (2017, ) Bocloud Co,. Lmt
 */
package cn.abcsys.devops.core.application;

import cn.abcsys.devops.core.Application;
import cn.abcsys.devops.core.application.configs.BasicInfo;
import cn.abcsys.devops.core.application.configs.ResourceInfo;

/**
 * @author wuheng@{otcaix.iscsa.ac.cn,beyondcent.com}
 * @date   May 20, 2017
 *
 * <code>Instance<code>表示Nginx、Mysql和应用的实例
 */
public interface Instance {

	/************************************************
	 * 
	 *                 基本功能
	 *
	 ************************************************/
	/**
	 * 返回实例的UUID
	 * 
	 * @return
	 */
	public String getUUID();
	
	/**
	 * 获取所属应用
	 * 
	 * @return
	 */
	public Application getOwnedApplication();
	
	/**
	 * 设置应用实例基本信息
	 * 
	 * @param info
	 * @return
	 */
	public Object setBasicInfo(BasicInfo info);
	
	/**
	 * 设置应用实例资源信息
	 * 
	 * @param info
	 * @return
	 */
	public Object setResourceInfo(ResourceInfo info);
	
	/**
	 * 获取应用实例的基本信息
	 * 
	 * @return
	 */
	public BasicInfo getBasicInfo();
	
	/**
	 * 获取应用实例的资源信息
	 * 
	 * @return
	 */
	public ResourceInfo getResourceInfo();
	
	/************************************************
	 * 
	 *                 辅助功能
	 *
	 ************************************************/
	/**
	 * @author wuheng@{otcaix.iscsa.ac.cn,beyondcent.com}
	 * @date   May 20, 2017
	 *
	 */
	public static enum Type {
		/**
		 * 用户开发的代码，运行在应用服务器中
		 */
		APPLICATION,
		/**
		 * Nginx、Mysql等
		 */
		SERVICE
	}
}
